iT邦幫忙

DAY 27
0

重頭打基礎-C/C++系列 第 27

重頭打基礎-C/C (Day27:static)

  • 分享至 

  • xImage
  •  

static全域變數與普通全域變數有什麼差別?

**簡單:**變更它的作用域,限制他的使用範圍

static區域變數與普通區域變數有什麼差別?

**簡單:**改變了他的儲存方式,也就是改變他的生命週期。

全域變數可不可以定義在可被多個.c文件包含的.h文件中

可以,在不同的.c文件中以static形式來宣告同名全域變數。(待測試)

印出的值是?

int globalVar;
void foo1() {
int localVar = 0;
static int staticVar = 0;
localVar++;
staticVar++;
globalVar++;
printf("[foo1] local: %d, static: %d, global: %d\n", localVar, staticVar, globalVar);
}
void foo2() {
int localVar = 0;
static int staticVar = 0;
localVar++;
staticVar++;
globalVar++;
printf("[foo2] local: %d, static: %d, global: %d\n", localVar, staticVar, globalVar);
}
int main() {
foo1();
foo2();
foo1();
foo2();
}

下面的程式實作A+B,請問錯誤在哪?

int add(int B){

static int A = 100;

A += B;

return A;

}

第二次調用時static會紀錄上次的A值,會出錯。

印出的值是?

int sum(int a)
{

auto int c=0;

static int b=3;

c+=1;

b+=2;

return(a+b+c);

}
void main()
{

int I;

int a=2;

for(I=0;I<5;I++)

{

printf("%d,", sum(a));

}

}


上一篇
重頭打基礎-C/C (Day26:悠閒的假日阿~~)
下一篇
重頭打基礎-C/C (Day28:指標函數)
系列文
重頭打基礎-C/C++30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言